using System.Windows.Forms;
using StructureMap;
using StructureMap.Attributes;

namespace Nuwanda.TfsSpotlight.Shell.Services.Interfaces
{
    /// <summary>Provides messaging services</summary>
    [PluginFamily("MonitService", Scope = InstanceScope.Singleton)]
    public interface IMonitService
    {
        /// <summary>Clears the status message</summary>
        void ClearStatusMessage();

        /// <summary>Places given message on a status bar</summary>
        /// <param name="message">Masage to display</param>
        /// <param name="severity">Severity of the message</param>
        void ShowStatusMessage(string message, MessageSeverity severity);

        /// <summary>Starts unknown progress. The duration is not defined and it looks as marque</summary>
        void StartUnknownProgress();

        /// <summary>Stops progress</summary>
        void StopProgress();

        /// <summary>Shows message box with question</summary>
        /// <param name="question">Question</param>
        /// <param name="buttons">Buttons to show</param>
        /// <returns>User input</returns>
        DialogResult ShowQuestion(string question, MessageBoxButtons buttons);

        /// <summary>Shows a message on a monit panel</summary>
        /// <param name="message">Message to show</param>
        /// <param name="proceedHandler">A handler to fire when user clicks OK</param>
        void ShowMonitMessage(string message, MethodInvoker proceedHandler);

        /// <summary>Hides monit panel</summary>
        void HideMonitMessage();

        void ShowMonitMessage(string message, MessageSeverity severity);
    }
}